package love.xiaohh.minio.services;

import io.minio.GetObjectResponse;
import io.minio.StatObjectResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

/**
 * <p>
 * 文件系统的服务层
 * </p>
 *
 * @author XiaoHH
 * @version 1.0
 * @date 2021-11-21 星期日 9:34:50
 * @file MinioService.java
 */
public interface MinioService {

    /**
     * 上传一个文件
     *
     * @param bucket     桶名字
     * @param objectName 对象名字
     * @param file       文件
     */
    void putObject(String bucket, String objectName, MultipartFile file);

    /**
     * 上传一个文件
     *
     * @param bucket      桶名字
     * @param objectName  对象名字
     * @param contentType 文件类型
     * @param inputStream 输入流
     */
    void putObject(String bucket, String objectName, String contentType, InputStream inputStream);

    /**
     * 获取一个文件对象
     *
     * @param bucket     桶名称
     * @param objectName 对象名称
     * @return 输入流
     */
    GetObjectResponse getObject(String bucket, String objectName);

    /**
     * 获取文件状态
     *
     * @param bucket     桶名称
     * @param objectName 对象名称
     * @return 获取文件状态
     */
    StatObjectResponse getStatObject(String bucket, String objectName);

    /**
     * 在分布式文件系统当中删除一个文件
     *
     * @param bucketName 同名称
     * @param objectName 对象名称
     */
    void removeObject(String bucketName, String objectName);
}
